Fire TV Stickをhubotサーバ化してRM Mini3を操作する
termux というLinuxエミュレータ(無料のandroidアプリ)を使って、Fire TV Stick にhubotの常駐する Linux サーバを構築し、RM Mini3 を操作できるようにする。
https://gyazo.com/9e38f72cc019a24ee72c0ec116f90fe0 http://amzn.to/2r4E2Tg
パソコンもラズパイも不要
すでに Fire TV Stick が手元にあるなら、追加費用なしで、RM Mini3 を活用できる。
また、手元にない場合でも、Fire TV Stick なら単品でも役に立つうえ、Raspberry Pi のフルセットを揃えるよりも、安く済む。
パソコンも Raspberry Pi も持っていないなら、Fire TV Stick は、有力な hubot 動作環境の一つと思われる。
(ただし、Fire TV Stick へのインストール作業は少し難易度が高いので、より扱いやすいRaspberry Piの方が初心者向け。)
(また、Fire TV Stickでも、castv2-client を使えば、Google Homeにテキストを喋らせることができる。は、Google Homeにテキストを喋らせることができない点が惜しい → 166氏による解説)
(より高性能なFire TVを選ぶのもあり)
(1世代前のFire TVやFire TV Stickでも、動作するとのご報告を頂きました!(134氏、149氏、178氏、291氏))
謝辞
Fire TV Stick の hubot サーバ化は、掲示板(【IFTTT】Google home で IoT Part.1【Hue】)の 939氏 ならびに有志の皆さまのご協力によって実現しました。
以下の設定手順についても、939氏に目を通して頂いきました。感謝の意をここに表します。ありがとうございます。
準備
可能であれば、Fire TV Stick を工場出荷時の設定にリセットしておくと、予期せぬトラブルに嵌りにくくなる。
(リセットする前はサーバ化に失敗したが、リセットしたらサーバ化できたという報告がある。)
termuxのインストール
Google Play からアプリ termux をインストールすれば、下図のように、すぐにLinuxを使えるようになる。(脱獄なども不要)
Fire TV Stick は、androidベースのOSが入った、android端末の亜種なので、android用のアプリ(の一部)が動作する。
ただし、インストールには少し手間がかかるので、こちらを参照のこと → Fire TV StickにGoogle Playアプリをインストール
https://gyazo.com/96db7f21b82104e6cca71c3afe8fa804
termuxでのキー入力
termuxでのキー操作にはBluetoothキーボードを用いる → Fire TV StickへのBluetoothキーボード、マウスの接続方法と使用感
Bluetoothキーボードがなくても、 Fire TV Stick のリモコンでも操作できるかもしれないが、かなりの苦痛を伴う(ドラクエ2の復活の呪文より辛い)ことは明らか。素直にBluetoothキーボードを購入した方がよいだろう。(安いものなら千円しない。)
(スマホアプリの Fire TV Remote と Hacker's Keyboard を併用すれば、スマホからキー入力できるかも? by 981氏 982氏)
(↑ スマホからはキー入力できなかったそうです。52氏 の報告のおかげで、他の方が同じ試行錯誤をせずに済みます。感謝!)
(ちなみに、パソコンからtermuxにSSH接続したい場合は、termuxでSSHサーバを動かすこともできる。)
スリープ防止
Fire TV Stick が深いスリープに入ってしまうと、Google Home や Amazon Echo などから、ネット経由で hubot にアクセスできなくなってしまうので、termux-wake-lock コマンドを実行して、深いスリープに入らないようにロックしておく。
code:sh
$ termux-wake-lock
なお、ロックを解除するには、termux-wake-unlock コマンドを実行すればよい。
必要な前提知識
まったくの初心者(LinuxやMacでのコマンドライン操作が初めての方)でも設定できるように、このサイトでは、設定に必要なすべての作業を、ほぼ漏れなく、できる限り丁寧に説明している。
それでも、もしうまく設定できない場合は、ひとまずコーヒーでも飲んで、冷静になってから、設定をゆっくり、丁寧に再確認して頂きたい。設定ミスの原因は入力ミスがほとんどなので、設定でミスが生じても、慌てずに、このサイトの説明をじっくり読み直せば、入力ミス(記号の打ち忘れなど)に気づけるはず。
また、コマンドラインでの操作方法は、ネットの断片的な情報をつまみ読みするよりも、本で体系的に学んだ方が、圧倒的に学習効率がよい。Kindle版なら今すぐ読める。
ゼロから基礎を学べる → 『6日間で楽しく学ぶLinuxコマンドライン入門』 972円(2018年1月15日現在の価格)
広く体系的に学ぶなら → 『新しいLinuxの教科書』 2,700円(2018年1月15日現在の価格)
node.jsのインストール
code:sh
$ apt update
$ apt upgrade
$ apt install nodejs
$ npm install npm n -g
redisの準備
code:sh
$ apt install redis
$ redis-server & # redisサーバを(とりあえず)バックグラウンドで実行
redisの動作確認はこちら → redisの導入と動作確認
hubot の準備
code:sh
$ npm config set prefix ~/usr/local # npm install -g のインストール先を変更
$ npm install -g generator-hubot yo
雛形の生成
code:sh
$ mkdir homebot # ロボットの名前をとりあえず homebot とする(どんな名前でもOK)
$ cd homebot
$ ~/usr/local/bin/yo hubot
? Owner # メールアドレスなどを入力(デフォルトのままでOK)
? Bot name #「homebot」と入力
? Description
? Bot adapter #「slack」と入力
bin/hubot を修正
実行ファイルbin/hubotの先頭行のshへのPATHを修正する。
なお、ファイルの編集には、nano というエディタを使う。(nanoの使い方はこちら → nano)
code:sh
$ apt install nano # nanoをインストール
$ which sh
/data/data/com.termux/files/usr/bin/sh # この結果をコピーしてから、、、
$ nano bin/hubot
#!/bin/sh # この先頭行を削除して、、、
#!/data/data/com.termux/files/usr/bin/sh # 「which sh」の結果をペーストする
つまり、which shの結果が☆△◎の時は、1行目の#!/bin/shを、#!☆△◎に書き換えればOK。
hubotの動作確認
とりあえず hubot を起動してみると、以下のようなエラーが出てくる場合がある。
code:sh
$ bin/hubot
bin/hubot: 8: exec: node_modules/.bin/hubot: Permission denied
このエラーが出た場合は、Fire TV Stick を工場出荷時の設定にリセットしてから、あらためて設定をし直すと、うまくいくことがある。また、もし可能なら、termuxアプリにストレージの権限を設定するとうまくいくことがある。
他のエラーや警告の解消方法や、残りの作業内容は、「hubotの雛形の生成 」の「hubotの動作確認」以降とまったく同じ。
注意事項
termuxや Fire TV Stick を再起動しても、ここで行った設定や、学習した赤外線データは残るのでご安心を。
ただし、停止前には必ず redis-cli shutdown を実行すること。
(redisを正常終了しないと、ストレージへの書き込みがまだ完了していない赤外線データが、消える恐れがある。)
また、termux を再起動した際には、redis-server &を実行して、redis を再起動させること。
termux における hubot や redis の起動の自動化は、Termux:Boot を参考にすれば、できるかもしれない(未確認)。
2018/1/16 Amazon.co.jpアソシエイト
Copyright (C) 2017-2018 Tak Jaga